// 引入用户数据模型
let userModel = require('../model/userModel');
// 引入MD5  --  密码加密加盐
let md5 = require('blueimp-md5');
// 引入基础配置文件
const initConfig = require('../config/init');

// 导出用户模型控制器
module.exports = {
    // 跳转到注册页面
    showRegister: (req, res) => {
        res.render('register');
    },
    // 处理表单注册
    handleRegPost: (req, res) => {
        let newUser = req.body;
        /* 验证用户名是否已存在逻辑 */
        userModel.checkUser(newUser.username, (err, data) => {
            // 数据库查询操作失败
            if (err) return res.json({
                status: 0,
                msg: "数据库查询失败"
            });
            // 若成功查询，且数据长度不为0，则表明该用户名已被注册
            if (data.length != 0) {
                return res.json({
                    status: 0,
                    msg: "该用户名已被注册，请重新输入！"
                });
            };

            // 注册用户密码加密加盐
            newUser.password = md5(newUser.password, initConfig.encryption);

            /* 添加注册用户信息逻辑 */
            userModel.addUser(newUser, (err, data) => {
                // 添加信息失败
                if (err) return res.json({
                    status: 0,
                    msg: "添加注册用户信息失败"
                });

                // 添加信息成功
                res.json({
                    status: 1,
                    msg: "注册成功"
                });
            });
        });
    },
    // 处理渲染登录页
    showLogin: (req, res) => {
        res.render('login');
    },
    // 处理登录表单
    handleLogin: (req, res) => {
        // 获取登录表单数据
        let loginData = req.body;
        // 密码需加密加盐  --   因为注册已相应做了这些处理
        loginData.password = md5(loginData.password, initConfig.encryption);

        // 调用登录数据模型
        userModel.checkLogin(loginData, (err, data) => {
            if (err) return res.json({
                status: 0,
                msg: "数据库查询操作失败"
            });
            // 还需判断查询的结果是否为空数组，若是，则用户未注册
            if (data.length != 0) {
                // 登录成功设置session  --  状态保存
                req.session.islogin = true;
                // 把前台需要的数据绑在session带回
                req.session.user = data[0];
                res.json({
                    status: 1,
                    msg: "登录成功"
                });
            } else {
                return res.json({
                    status: 0,
                    msg: "该用户不存在"
                });
            };
        });
    },
    // 注销登录操作
    handleLogOut: (req, res) => {
        // 清除session
        req.session.destroy(err => {
            if (err) throw err;
            // 无err,注销成功，页面重定向回首页   
            res.redirect('/');
        });
    }
};